本文写于 Debian 12 (Bookworm) 环境下
logrotate 支持 hourly
关键字,因此配置方面不存在问题,只需要修改调用 logrotate 的程序,它通常是由 cron 调用的,但是在本文编写时所在的系统下它是由 systemctl 调用的,可以查看 /etc/cron.daily/logrotate
脚本文件,如果存在检测 system
然后退出的则表示它是由 systemctl
调用的
故此需要修改调用 logrotate 的程序的配置文件
使用 systemctl list-timers
列出所有定时器,找到 logrotate.timer
,在左侧 NEXT 一栏中可以发现得知它的下一次执行是在明天的凌晨
然后修改它的配置,timer 配置文件存放在 /lib/systemd/system/
下,这个可由 systemctl cat logrotate.timer
输出的配置文件内容第一行的注释得知
修改 /lib/systemd/system/logrotate.timer
为如下内容
[Unit]
Description=Hourly rotation of log files
Documentation=man:logrotate(8) man:logrotate.conf(5)
[Timer]
OnCalendar=hourly
AccuracySec=1min
Persistent=true
[Install]
WantedBy=timers.target
然后重启 systemctl
sudo systemctl daemon-reload
sudo systemctl restart logrotate.timer
再次使用 systemctl list-timers
查看 logrotate.timer
的下一次执行时间,如果是下一小时的 0 分 0 秒则意外则正确
题外话:第一次知道 systemd 也有定时器